package main

//cool "awesomeProject/testpackage"
import (
	"awesomeProject/dog"
	. "awesomeProject/testpackage"
	"fmt"
	"strconv"
)

func main() {
	demo4()
}

func demo4() {
	var num1 int = 80
	num1++
	fmt.Println(num1)

	if num1 < 100 {
		fmt.Println("小于100")
	} else if num1 < 120 {
		fmt.Println("小于120")
	} else {
		fmt.Println("大于20")
	}

	var type1 int = 2
	switch type1 {
	case 1:
		fmt.Println("111")
	case 2:
		fmt.Println("2222")
		fallthrough // 表示执行下一分支
	case 3:
		fmt.Println("333")
	case 4:
		fmt.Println("444")
	default:
		fmt.Println("other")
	}

	// 循环
	fmt.Println("********** 循环开始 ***************")
	//for i := 0; i < 10; i++ {
	//	fmt.Println(i)
	//}

	fmt.Println("********** a ***************")
	a := 1
	for {
		a++
		if a > 10 {
			break
		}
		fmt.Println(a)
	}

	fmt.Println("********** b ***************")
	b := 1
	for b < 10 {
		b++
		fmt.Println(b)
	}

	// 跳转语句
A:
	for i := 0; i < 10; i++ {
		if i > 3 {
			break A
			goto B
		}
	}
	fmt.Println("A end")
B:
	fmt.Println("goto b")
}

// 第三节 类型
func demo3() {
	// 第三节 数据类型
	// 整型
	var num1 uint // uint表示正整数 uint8 0-255
	var num2 int  // 表示 整数 包含负的 int8 -127 - 127
	//num1 = -999 报错必须是正整数
	num1 = 999
	num2 = 999
	fmt.Println(num1, num2)

	// 浮点类型 float64
	var num3 float32
	num3 = 3.14151679899912456
	fmt.Println(num3)

	// 加上双引号就是字符串
	str := "dddd"
	var str1 = "dddd"
	fmt.Println(str, str1)

	// 布尔类型
	var bool1 bool
	bool1 = true
	fmt.Println(bool1)
	fmt.Println("************* 推导类型 *************")

	// 推出类型 %T 大写的
	fmt.Printf("%T", str)
	fmt.Printf("%T", 123.6)
	fmt.Println("*************  转换类型 ************")

	var string1 string
	string1 = "123"
	fmt.Println(string1)

	// string =》 int
	fmt.Println("*************  string => int ************")
	num11, _ := strconv.Atoi(string1)
	fmt.Println(num11)

	fmt.Println("*************  string => int64 ************")
	num22, _ := strconv.ParseInt(string1, 10, 64)
	fmt.Println(num22)

	fmt.Println("*************  int => string ************")
	var num111 int = 99
	string111 := strconv.Itoa(num111)
	fmt.Println(string111)

	fmt.Println("*************  int64 => string ************")
	var num1112 int = 99999999
	string1112 := strconv.Itoa(num1112)
	fmt.Println(string1112)

	fmt.Println("************* string => float32  ************")
	var string32 = "1.34"
	float321, _ := strconv.ParseFloat(string32, 32)
	fmt.Println(float321)

	fmt.Println("************* string => float64  ************")
	var string64 = "1.341274878"
	float641, _ := strconv.ParseFloat(string64, 64)
	fmt.Println(float641)

	fmt.Println("************* int64 => int  ************")
	var num991 int64 = 2222
	num99 := int(num991)
	fmt.Println(num99)

	fmt.Println("************* int => int64  ************")
	var num992 int = 2222
	num999 := int64(num992)
	fmt.Println(num999)
}

// 第二节包引入
func demo2() {
	// 第二节
	fmt.Println("Hello World")
	//fmt.Println(cool.A)
	fmt.Println(A)
	fmt.Println(B)
	fmt.Println(dog.Name)
}
